package top.lyjwn.todo.weinxin.api.applet;

import com.alibaba.fastjson2.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.lyjwn.todo.common.utils.http.HttpUtil;
import top.lyjwn.todo.weinxin.api.url.WXAppletUrl;
import top.lyjwn.todo.weinxin.applet.AppletAccessToken;

/**
 * 接口说明
 * 接口英文名
 * getPhoneNumber
 * <p>
 * 功能描述
 * 该接口用于将code换取用户手机号。 说明，每个code只能使用一次，code的有效期为5min。
 * <p>
 * 调用方式
 * HTTPS 调用
 */
@Component
public class GetPhoneNumber {

    @Autowired
    private WXAppletUrl wxAppletUrl;


    public GetPhoneNumber() {
    }

    public String getUrl(AppletAccessToken accessToken) {
        return wxAppletUrl.getGET_PHONE_NUMBER().replace("#{ACCESS_TOKEN}", accessToken.getAccess_token());
    }

    public String getPhoneNumber(AppletAccessToken accessToken, String code) {
        return getPhoneNumber(accessToken, code, null);
    }

    public String getPhoneNumber(AppletAccessToken accessToken, String code, String openid) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", code);
        if (openid != null) {
            jsonObject.put("openid", openid);
        }
        String res = HttpUtil.request(getUrl(accessToken), HttpUtil.METHOD_POST, jsonObject.toJSONString());
        return res;
    }
}
